--[[
	service，处理 大厅的广告
	主要是两部分，
	1，每次启动，去redis里面获取系统的ad，并且gm可以推送过来更改
	2，每个用户上来，从这里获取自己茶楼广告，如果没有，去redis里面获取，如果获取到了，保存在这里
	   下一个同茶楼用户就不用再去获取
]]
local filename = "hallad.lua"
local skynet = require "skynet"
local cluster = require "skynet.cluster"

require "skynet.manager"

local json = require "cjson.safe"
json.encode_sparse_array(true,1,1)

local filelog = require "filelog"
local timetool = require "timetool"
local tabletool = require "tabletool"
local redisdao = require "redisdao"
local json = require "cjson.safe"
json.encode_sparse_array(true, 1, 1)

local routerbase = require "routerbase"

local Hallad = routerbase:new()

local system_ad = {} -- 系统固定的广告，每次启动从redis里面获取， gm可以推送修改
local tearoom_ad = {} -- 馆主rid做主键，{茶楼名，简介} 做value
local default_tearoom_ad = {name="麻将", intro="抵制不良游戏\n拒绝盗版游戏\n注意自我保护\n谨防上当受骗\n适度游戏益脑\n沉迷游戏伤身\n合理安排时间\n享受健康生活"} -- 没填写的时候的茶楼广告
local default_hall_ad = {}

-- 每次启动从redis里面恢复系统固定广告
function Hallad.CMD.init()
	local result, result_data = redisdao.query_data(".gmmqredis", "get", "hall_systemad")
	if result_data then
		system_ad =  json.decode(result_data) or {}
	end

	for k,v in pairs(system_ad) do
		table.insert(default_hall_ad, v)
	end
	table.insert(default_hall_ad, default_tearoom_ad)
	default_hall_ad[#default_hall_ad]["pic"] = ""
	default_hall_ad[#default_hall_ad]["target"] = ""
end

-- gm可以后台更改系统广告
function Hallad.CMD.set_system_ad(addata)
	system_ad = addata
end

-- 删除内存中的某个馆主的广告，新的玩家会再次从redis中获取
function Hallad.CMD.del_tearoom_ad(agencyrid)
	tearoom_ad[agencyrid] = nil
end

-- 玩家登录要获取广告，首先看内存中是否有，如果有，直接返回（==0 ，返回系统）如果没有，去redis中获取，如果还没有，内存中置0 ，表示是系统大厅
-- 如果有，则先放到内存中
-- 
-- 获取大厅广告，这里要区分自己是推广员。如果自己是推广员，就获取自己推广签名
-- 如果自己是推广员，而且没有写说明，内容就是提醒他去后台配置推广签名
-- 如果只是普通用户，就获取上级的推广签名，如果上级没配置，或者是0，就给系统签名

-- tearoom_rid ： 所在茶馆的馆主id，如果自己是馆主，就是自己
-- agencylevel ： 自己等级（是否是推广员），只是为了显示不同的提醒
function Hallad.CMD.get_hall_ad(tearoom_rid, agencylevel)
	local hallad = {}
	if tearoom_rid == 0 and agencylevel == 0 then 
		--hallad[1]={subject=default_tearoom_ad.name, content = default_tearoom_ad.intro, pic="", target=""}
		for k,v in pairs(system_ad) do
			table.insert(hallad, v)
		end
		return hallad
	end
	-- 独特广告
	for k,v in pairs(system_ad) do
		table.insert(hallad, v)
	end

	local tearoom_name = default_tearoom_ad.name
	local tearoom_intro = default_tearoom_ad.intro
	
	if agencylevel > 0 then
		tearoom_intro = "　　推广员，馆主可在推广员后台设置自己微信。发展的会员可以在其客户端看到该微信，联系馆主。"
	end
	local result, result_data = redisdao.query_data(".gmmqredis", "get", "tearoom_name:" .. tearoom_rid)
	if result_data ~= nil then
		tearoom_name = result_data .. '茶馆'
	end

	result, result_data = redisdao.query_data(".gmmqredis", "get", "tearoom_intro:" .. tearoom_rid)
	if result_data ~= nil and result_data ~= "" then
		tearoom_intro = "馆主微信：\n" .. result_data
	end

	table.insert(hallad, {subject=tearoom_name, content = tearoom_intro, pic="", target=""})
	return hallad
end

skynet.start(function ()
	Hallad:start()
end)

